//
//  OAuthViewControllerTouch+Buzz.m
//  Buzz API Demo
//
//  Created by Peter Hopkins on 5/6/10.
//  Copyright 2010 Google Inc. All rights reserved.
//
//  Licensed under the Apache License, Version 2.0 (the "License");
//  you may not use this file except in compliance with the License.
//  You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
//  Unless required by applicable law or agreed to in writing, software
//  distributed under the License is distributed on an "AS IS" BASIS,
//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//  See the License for the specific language governing permissions and
//  limitations under the License.
//

#import "OAuthViewControllerTouch+Buzz.h"

#import "GDataOAuthViewControllerTouch.h"

#import "GTMNSString+URLArguments.h"

#define kGaiaRequestTokenURL @"https://www.google.com/accounts/OAuthGetRequestToken"
#define kGaiaAccessTokenURL @"https://www.google.com/accounts/OAuthGetAccessToken"
#define kBuzzAuthorizeTokenURLFormat @"http://www.google.com/buzz/api/auth/OAuthAuthorizeToken?domain=%@&scope=%@&xoauth_displayname=%@"

@implementation GDataOAuthViewControllerTouch (BuzzAdditions)

-(id)initForBuzzWithScope:(NSString *)scope
                 language:(NSString *)language
           appServiceName:(NSString *)keychainAppServiceName
           authentication:(GDataOAuthAuthentication *)auth
                 delegate:(id)delegate
         finishedSelector:(SEL)finishedSelector {

  NSURL* authorizeTokenURL = [NSURL URLWithString:
      [NSString stringWithFormat:kBuzzAuthorizeTokenURLFormat,
       [[auth consumerKey] gtm_stringByEscapingForURLArgument],
       [scope gtm_stringByEscapingForURLArgument],
       [keychainAppServiceName gtm_stringByEscapingForURLArgument]]];

  [auth setServiceProvider:kGDataOAuthServiceProviderGoogle];
  [auth setMobile:@"mobile"];
  [auth setCallback:@"http://www.google.com/OAuthCallback"];
  [auth setScope:scope];

  return [self initWithScope:scope
                    language:language
             requestTokenURL:[NSURL URLWithString:kGaiaRequestTokenURL]
           authorizeTokenURL:authorizeTokenURL
              accessTokenURL:[NSURL URLWithString:kGaiaAccessTokenURL]
              authentication:auth
              appServiceName:keychainAppServiceName
                    delegate:delegate
            finishedSelector:finishedSelector];
}

@end
